package com.yunji.aggregate.model.dto.base;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.yunji.common.annotation.Excel;
import com.yunji.common.base.PageDTO;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.hibernate.validator.constraints.Length;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;

/**
 * @author : peter-zhu
 * @date : 2024/12/11 11:14
 * @description : TODO
 **/
@EqualsAndHashCode(callSuper = true)
@Data
public class MemberDTO extends PageDTO implements Serializable {
    private static final long serialVersionUID = -7536736512119356299L;

    /**
     * $column.columnComment
     */
    @Excel(name = "用户ID")
    private Long id;

    /**
     * 帐号启用状态:0-&gt;正常；1-&gt;禁用
     */
    @Excel(name = "帐号启用状态", readConverterExp = "0=正常,1=停用")
    private Long status;

    /**
     * 昵称
     */
    @Excel(name = "昵称")
    @ApiModelProperty("昵称")
    @Length(message = "昵称不能超过{max}个字符 ", max = 15)
    private String name;


    /**
     * 性别：0-&gt;未知；1-&gt;男；2-&gt;女
     */
    @Excel(name = "性别", readConverterExp = "未知=0,女=1,未知=2")
    @ApiModelProperty("性别：0-&gt;未知；1-&gt;男；2-&gt;女")
    private Long gender;

    /**
     * 手机号码
     */
    @Excel(name = "手机号码")
    @ApiModelProperty("手机号码")
    @Length(message = "手机号不能超过{max}个字符", max = 11)
    private String phone;

    /**
     * 生日
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "生日", width = 30, dateFormat = "yyyy-MM-dd")
    @ApiModelProperty("生日")
    private Date birthday;

    /**
     * 头像
     */
    @Excel(name = "头像")
    @ApiModelProperty("头像")
    private String avatar;

    /**
     * 确定用户唯一标识
     */
    @Excel(name = "确定用户唯一标识")
    @ApiModelProperty("确定用户唯一标识")
    private String unionid;

    /**
     * 用户端openid
     */
    @Excel(name = "用户端openid")
    @ApiModelProperty("用户端openid")
    private String openid;

    /**
     * 累计收益
     */
    @ApiModelProperty("累计收益")
    @Excel(name = "累计收益")
    private BigDecimal earnAmount;

    /**
     * 提现金额
     */
    @ApiModelProperty("提现金额")
    @Excel(name = "提现金额")
    private BigDecimal cashAmount;

    /**
     * 账户余额
     */
    @ApiModelProperty("账户余额")
    @Excel(name = "账户余额")
    private BigDecimal remainAmount;

    /**
     * 冻结金额
     */
    @ApiModelProperty("冻结金额")
    @Excel(name = "冻结金额")
    private BigDecimal frozenAmount;

    @ApiModelProperty("退款金额")
    @Excel(name = "退款金额")
    private BigDecimal refundAmount;

    /**
     * 年龄标签
     */
    @Excel(name = "年龄标签")
    @ApiModelProperty("年龄标签")
    private String ageLabel;

    /**
     * 星座标签
     */
    @Excel(name = "星座标签")
    @ApiModelProperty("星座标签")
    private String constellationLabel;

    /**
     * 职业标签
     */
    @Excel(name = "职业标签")
    @ApiModelProperty("职业标签")
    private String careerLabel;

    /**
     * 社交现状标签
     */
    @Excel(name = "社交现状标签")
    @ApiModelProperty("社交现状标签")
    private String socialLabel;

    // token 映射唯一ID
    private String token;

    /*--------------------------------------分割线 例表查询回参--------------------------------------*/
    @Excel(name = "交易笔数", width = 15)
    @ApiModelProperty("交易笔数")
    private Integer totalCount;

    @Excel(name = "交易金额", width = 15)
    @ApiModelProperty("交易金额")
    private BigDecimal totalAmount;

    @Excel(name = "已取消订单数", width = 15)
    @ApiModelProperty("已取消订单数")
    private Integer cancelCount;

    /*--------------------------------------分割线 例表查询传参--------------------------------------*/

    @ApiModelProperty("小的交易笔数")
    private Integer minTotalCount;

    @ApiModelProperty("大的交易笔数")
    private Integer maxTotalCount;

    @ApiModelProperty("小的交易金额")
    private BigDecimal minTotalAmount;

    @ApiModelProperty("大的交易金额")
    private BigDecimal maxTotalAmount;

    @ApiModelProperty("小的退款金额")
    private BigDecimal minRefundAmount;

    @ApiModelProperty("大的退款金额")
    private BigDecimal maxRefundAmount;

    @ApiModelProperty("小的取消次数")
    private Integer minCancelCount;

    @ApiModelProperty("大的取消次数")
    private Integer maxCancelCount;

    @ApiModelProperty("开始时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date startCreateTime;

    @ApiModelProperty("结束时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date closeCreateTime;

    @ApiModelProperty("交易笔数排序 0-正序 1-倒序")
    private Integer totalCountOrder;

    @ApiModelProperty("交易金额排序 0-正序 1-倒序")
    private Integer totalAmountOrder;

    @ApiModelProperty("取消订单排序 0-正序 1-倒序")
    private Integer cancelCountOrder;

    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "创建时间", dateFormat = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty("创建时间")
    private Date createTime;
}
